package com.class06.listener;

import javax.servlet.*;

public class MyApplicationListener implements ServletContextListener , ServletContextAttributeListener {
//    1、contextInitialized方法在ServletContext对象创建的时候执行，只执行一次
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("ServletContext对象创建了");
    }
//    2、contextDestroyed方法在ServletContext对象销毁的时候执行，只执行一次
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("ServletContext对象销毁了");
    }

//    3、attributeAdded方法在向应用域中添加属性的时候执行
   public void attributeAdded(ServletContextAttributeEvent event) {
//        getServletContext()方法可以获取ServletContext对象
       ServletContext application = event.getServletContext();
//       获取应用域中的属性名和值
       String name = event.getName();
       Object value = event.getValue();
       System.out.println("应用域名为："+application.hashCode()+"应用增加了"+name+"--"+value);



   }
//    4、attributeRemoved方法在从应用域中删除属性的时候执行

    public void attributeRemoved(ServletContextAttributeEvent event) {
        //        getServletContext()方法可以获取ServletContext对象
        ServletContext application = event.getServletContext();
//       获取应用域中的属性名和值
        String name = event.getName();
        Object value = event.getValue();
        System.out.println("应用域名为："+application.hashCode()+"应用删除了"+name+"--"+value);

    }
//    5、attributeReplaced方法在应用域中属性被替换的时候执行

    public void attributeReplaced(ServletContextAttributeEvent event) {
        //        getServletContext()方法可以获取ServletContext对象
        ServletContext application = event.getServletContext();
//       获取应用域中的属性名和值
        String name = event.getName();
        Object value = event.getValue();
        Object newValue = application.getAttribute(name);
        System.out.println("应用域名为："+application.hashCode()
                +"应用替换了"+name+"--"+value+"--"+newValue);

    }



}
